home *** CD-ROM | disk | FTP | other *** search
/ World of Amiga / World of Amiga.iso / archive / assembly / angint7.s.lha / intro5s.s < prev    next >
Text File  |  1980-02-15  |  17KB  |  1,045 lines

  1. ;This is the 'Fireworks Intro II' ! Coded by CORTO
  2. ;Only for Angels members !
  3.  
  4. ; A,  Jrun
  5. ; WI  filename  run  end
  6. ; Ltext:
  7. ; L*** for comments
  8.  
  9.  
  10. org $40000
  11. load $40000
  12.  
  13. run:
  14. movem.L d0-d7/a0-a6,-(sp)
  15. bsr.L save_all
  16. lea $50000,a0
  17. move #$98ff,d7
  18. run1:
  19. clr.l (a0)+
  20. dbra d7,run1
  21.  
  22. lea font,a0
  23. lea fonts,a1
  24. move #1727,d7
  25. run2:
  26. move (a0)+,(a1)+
  27. clr (a1)+
  28. dbra d7,run2
  29.  
  30. bsr.L makedet
  31. move #15,d6
  32. run3:
  33. bsr.L makecopper
  34. dbra d6,run3
  35. bsr.L rectifzoom
  36. move #$100,coltab2+2
  37. lea $dff000,a6
  38. move #$3fff,$9a(a6)
  39. move #$c000,$9a(a6)
  40. move #$3fff,$96(a6)
  41. move #$83c0,$96(a6)
  42. move.L #copperlist,$80(a6)
  43. clr $88(a6)
  44. lea $dff000,a6
  45. bsr.L normal
  46.  
  47.  
  48. move.L #%111101111011100111101111,$63780+38
  49. move.L #%100001001010100011001001,$63780+64+38
  50. move.L #%100001001011100011001001,$63780+128+38
  51. move.l #%100001001010010011001001,$63780+192+38
  52. move.l #%111101111010010011001111,$63780+256+38
  53.  
  54. wait:
  55. cmpi.b #1,6(a6)
  56. bne.s wait
  57. tst.b 5(a6)
  58. bne.s wait
  59. move.L bpw,d0
  60. move.L bpa,bpw
  61. move.l d0,bpa
  62. move d0,copbpl3d+6
  63. swap d0
  64. move d0,copbpl3d+2
  65. swap d0
  66. addi.l #64,d0
  67. move d0,copbpl3d+14
  68. swap d0
  69. move d0,copbpl3d+10
  70. lea $dff000,a6
  71. bsr.L clear3d
  72. bsr.L calcule
  73. lea $dff000,a6
  74. bsr.L draw
  75.  
  76. ;lea $dff000,a6
  77. move.b delai,d0
  78. add.b d0,wait1
  79. tst.b wait1
  80. bne.s irq1
  81. bsr.L print
  82. irq1:bsr.L cycle
  83.  
  84. clr boum+2
  85.  
  86. lea det,a0
  87. lea bp1,a4
  88. bsr.L polaire
  89.  
  90. lea det+[40*nbdata],a0
  91. lea bp3,a4
  92. bsr.L polaire
  93.  
  94.     addi.b #2,cpal2
  95. bne.s irq03
  96.     bsr.L makecopper
  97.  
  98. irq03:
  99. addi.b #$40,cpal
  100. bne.s irq3
  101.  
  102. tst colmap1+2
  103. beq.s irq01
  104. move colmap1+2,d0
  105. bsr.s noir
  106. move d0,colmap1+2
  107. irq01:
  108. tst colmap2+2
  109. beq.s irq3
  110. move colmap2+2,d0
  111. bsr.s noir
  112. move d0,colmap2+2
  113. move d0,colmap2+6
  114. irq3:
  115. lea $dff000,a6
  116.  
  117. ;move #$f00,$dff180
  118.  
  119. btst #6,$bfe001
  120. bne.L wait
  121. bsr.L restore_all
  122. movem.L (sp)+,d0-d7/a0-a6
  123. rts
  124. wait1:dc.b 0
  125. delai:dc.b $40
  126. delai2:dc.l $c9f00000
  127. even
  128. speedtable:dc.W $10f9,$20e9,$40c9,$8089
  129.  
  130. noir:
  131. move d0,d1
  132. move d0,d2
  133. move d0,d3
  134. and #$f00,d1
  135. tst d1
  136. beq.s noir1
  137. sub #$100,d1
  138. noir1:and #$f0,d2
  139. tst d2
  140. beq.s noir2
  141. sub #$10,d2
  142. noir2:and #$f,d3
  143. tst d3
  144. beq.s noir3
  145. subq #1,d3
  146. noir3:
  147. or d3,d1
  148. or d2,d1
  149. move d1,d0
  150. rts
  151.  
  152. cpal:dc.b 0
  153. cpal2:dc.b 0
  154.  
  155. clear3d:move #$8400,$96(a6)
  156. clear31:btst #$e,2(a6)
  157. bne.s clear31
  158. move #$400,$96(a6)
  159. move #20,$66(a6)    ;64-44
  160. move.l bpw,$54(a6)
  161. move.L #$1000000,$40(a6)
  162. move #[280*64]+22,$58(a6)
  163. rts
  164.  
  165. rectifzoom:
  166. lea angels2,a2
  167. recl1:move (a2),d0
  168. ext.l d0
  169. lsl.l #8,d0
  170. divs #112,d0
  171. move d0,(a2)+
  172. cmpi #$7777,(a2)
  173. bne.s recl1
  174. rts
  175.  
  176. ;*** 8,16 et 24 sont les vitesses de rotation
  177. ;mais attention a ce que les lignes ne sortent pas de l'ecran
  178.  
  179. calcule:
  180. addi #8,x+2
  181. andi #$7fe,x+2
  182. addi #16,y+2
  183. andi #$7fe,y+2
  184. addi #24,z+2
  185. andi #$7fe,z+2
  186. lea si,a0
  187. lea cos,a1
  188. lea angels2,a2
  189. lea coord,a3
  190. movem.L vide,d0-d7
  191. calculoop:
  192. movem.w (a2)+,d0/d1/d2
  193. move d0,d5
  194. move d1,d6
  195. x:move #$200,d3
  196. muls (a0,d3),d0    
  197. muls (a1,d3),d1
  198. sub.l d1,d0
  199. muls (a1,d3),d5
  200. move d6,d1
  201. muls (a0,d3),d1
  202. add.l d5,d1
  203. asr.l #8,d0
  204. asr.l #2,d0
  205. asr.l #8,d1
  206. asr.l #2,d1
  207. y:move #$600,d3
  208. move d1,d5
  209. move d2,d6
  210. muls (a0,d3),d1
  211. muls (a1,d3),d2
  212. sub.l d2,d1
  213. muls (a1,d3),d5
  214. move d6,d2
  215. muls (a0,d3),d2
  216. add.l d5,d2
  217. asr.l #2,d1
  218. asr.l #8,d2
  219. asr.l #2,d2
  220. z:move #$200,d3
  221. move d2,d5
  222. move d0,d6
  223. muls (a0,d3),d2
  224. muls (a1,d3),d0
  225. sub.l d0,d2
  226. muls (a1,d3),d5
  227. move d6,d0
  228. muls (a0,d3),d0
  229. add.l d5,d0
  230. asr.l #2,d0
  231. asr.l #8,d2
  232. asr.l #6,d2
  233.  
  234. add #300,d2
  235. divs d2,d0
  236. divs d2,d1
  237. addi #[22*128],d0
  238. addi #[111*16],d1
  239. move d0,(a3)+
  240. move d1,(a3)+
  241. cmpi #$7777,(a2)
  242. bne.L calculoop
  243. rts
  244.  
  245. draw:
  246. lea coord,a3
  247. Lea angels2l,a4
  248. movem.L vide,d0-d7
  249. move.L bpw,a0
  250. move #$8400,$96(a6)
  251. wbbl:btst #6,2(a6)
  252. bne.s wbbl
  253. move #$400,$96(a6)
  254. move.l #$ffff8000,$72(a6)
  255. move.l #-1,$44(a6)
  256. move.w #64,$60(a6)
  257. move.w #64,$66(a6)
  258.  
  259. drawloop1:
  260. move.b (a4)+,d0
  261. move.b (a4)+,d2
  262.  
  263. lsl.b #2,d0
  264. lsl.b #2,d2
  265. ext d0
  266. ext d2
  267.  
  268. move 2(a3,d0.w),d1
  269. move (a3,d0.w),d0
  270. move 2(a3,d2.w),d3
  271. move (a3,d2.w),d2
  272.  
  273. asr #4,d0
  274. asr #4,d1
  275. asr #4,d2
  276. asr #4,d3
  277.  
  278. cmp d0,d2
  279. bne.s draw1
  280. cmp d1,d3
  281. beq.s draw2
  282. draw1:
  283. bsr.s drawline
  284. draw2:
  285. cmpi.B #$77,(a4)
  286. bne.s drawloop1
  287. rts
  288.  
  289. drawline:
  290. move.l d1,d4
  291. lsl.l #6,d4
  292. moveq #-$10,d5
  293. and.w d0,d5
  294. lsr.w #3,d5
  295. add.w d5,d4
  296. add.l a0,d4
  297. clr.l d5
  298. sub.w d1,d3
  299. roxl.b #1,d5
  300. tst.w d3
  301. bge.s y2gy1
  302. neg.w d3
  303. y2gy1:
  304. sub.w d0,d2
  305. roxl.b #1,d5
  306. tst.w d2
  307. bge.s x2gx1
  308. neg.w d2
  309. x2gx1:
  310. move.w d3,d1
  311. sub.w d2,d1
  312. bge.s dygdx
  313. exg d2,d3
  314. dygdx:roxl.b #1,d5
  315. move.b table_octants(pc,d5),d5
  316. add.w d2,d2
  317. move #$8400,$96(a6)
  318. wblit:btst #6,$2(a6)
  319. bne.s wblit
  320. move #$400,$96(a6)
  321. move.w d2,$62(a6)
  322. sub.w d3,d2
  323. bge.s signnl
  324. or.b #$40,d5
  325. signnl:move.w d2,$52(a6)
  326. sub.w d3,d2
  327. move.w d2,$64(a6)
  328. and.w #$f,d0
  329. ror.w #4,d0
  330. or.w #$bca,d0
  331. move.w d0,$40(a6)
  332. move.w d5,$42(a6)
  333. move.l d4,$48(a6)
  334. move.l d4,$54(a6)
  335. lsl.w #6,d3
  336. addq.w #2,d3
  337. move.w d3,$58(a6)
  338. rts
  339.  
  340. table_octants:
  341. dc.b 1,17,9,21,5,25,13,29
  342. even
  343.  
  344. bpa:dc.L b3p1    ;bitplan affiché
  345. bpw:dc.L b3p2    ;bitplan travail
  346.  
  347. vide:blk.b 32,0
  348.  
  349. angels2:
  350. dc.w -600,100,400,-500,350,400,-400,100,400
  351.  
  352. dc.w -450,350,400,-300,350,400,-300,100,400
  353.  
  354. dc.w -125,225,400,-50,100,400,-225,100,400,-225,350,400
  355. dc.W 75,350,400,0,350,400,0,250,400,125,250,400
  356. dc.w 0,100,400,175,100,400
  357.  
  358. dc.W 250,350,400,250,100,400,600,100,400,400,350,400,500,350,400
  359. dc.w $7777
  360.  
  361. angels2l:
  362. dc.b 0,1,1,2,2,0
  363. dc.b 3,4,4,5
  364. dc.b 6,7,7,8,8,9,9,10,11,14,12,13,14,15
  365. dc.b 16,17,17,18,18,19,19,20
  366. dc.w $7777
  367.  
  368.  
  369. coord:blk.w 80,0
  370.  
  371.  
  372. clear:
  373. lea $dff000,a6
  374. move #$8400,$96(a6)
  375. clear1:
  376. btst #6,2(a6)
  377. bne.s clear1
  378. move #$400,$96(a6)
  379. move.L #$1000000,$40(a6)
  380. move #$14,$66(a6)
  381. move.L #bp1,$54(a6)
  382. move #[222*64]+22,$58(a6)
  383. rts
  384.  
  385. clear2:
  386. lea $dff000,a6
  387. move #$8400,$96(a6)
  388. clear5:
  389. btst #6,2(a6)
  390. bne.s clear5
  391. move #$400,$96(a6)
  392. move.L #$1000000,$40(a6)
  393. move #$14,$66(a6)
  394. move.L #bp3,$54(a6)
  395. move #[222*64]+22,$58(a6)
  396. rts
  397.  
  398. mod=0
  399. arg=4
  400. vmod=8
  401. varg=12
  402. modx=16
  403. cx=20
  404. cy=22
  405. typ=24
  406. adr=26
  407. img=28
  408. amod=30
  409.  
  410. nbdata=34
  411.  
  412. polaire:
  413. lea si,a6    ;sinus
  414. lea cos,a5
  415. ;lea bp1,a4
  416. lea bp2,a2
  417. lea table_images,a3
  418. ;lea det,a0
  419. move #39,d7
  420. poloop1:
  421. tst typ(a0)
  422. bmi.L polend
  423. beq.s pol2
  424. move adr(a0),d1
  425. move img(a0),d0
  426. not d0
  427. and d0,(a4,d1.w)
  428. bra.s pol3
  429. pol2:
  430. move adr(a0),d1
  431. move img(a0),d0
  432. not d0
  433. and d0,(a2,d1.w)
  434. pol3:
  435. move.l arg(a0),d0
  436. add.l varg(a0),d0
  437. move.l d0,arg(a0)
  438. swap d0
  439. and #$7fe,d0
  440.  
  441. move.L vmod(a0),d1
  442. add.L amod(a0),d1
  443. move.L d1,vmod(a0)
  444.  
  445. move.l mod(a0),d1
  446. add.l vmod(a0),d1
  447. move.l d1,mod(a0)
  448.  
  449. swap d1
  450.  
  451. move (a6,d0.w),d2
  452. move (a5,d0.w),d3
  453. muls d1,d2
  454. muls d1,d3
  455. asr.L #8,d2
  456. asr.L #8,d3
  457. asr.l #2,d2
  458. asr.l #2,d3
  459.  
  460. addi cy(a0),d2
  461. bmi.s pas_aff
  462. cmpi #221,d2
  463. bpl.s pas_aff
  464. addi cx(a0),d3
  465. bmi.s pas_aff
  466. cmpi #351,d3
  467. bpl.s pas_aff
  468.  
  469. tst typ(a0)
  470. bne.s pols2    
  471. ;pret a exploser ?
  472. tst.L vmod(a0)
  473. bmi.L explose
  474.  
  475. pols2:
  476.  
  477. move d3,d4
  478. ;mulu #44
  479. lsl #6,d2
  480. lsr #3,d3
  481. and #$fffe,d3
  482. add d3,d2
  483. and #$f,d4
  484. add d4,d4
  485. move (a3,d4.w),d4
  486. tst typ(a0)
  487. beq.s pol1
  488. or d4,(a4,d2.w)
  489. move d4,img(a0)
  490. move d2,adr(a0)
  491. polend:addi.L #nbdata,a0
  492. dbra d7,poloop1
  493. rts
  494. pol1:or d4,(a2,d2.w)
  495. move d4,img(a0)
  496. move d2,adr(a0)
  497. addi.L #nbdata,a0
  498. dbra d7,poloop1
  499. rts
  500.  
  501. pas_aff:
  502. move #-1,typ(a0)
  503. bra.s polend
  504.  
  505. table_images:dc.W $8000,$4000,$2000,$1000,$800,$400,$200,$100
  506. dc.w $80,$40,$20,$10,8,4,2,1
  507.  
  508.  
  509. typstop:dc.L 0
  510. typcount:dc.B 0
  511. even
  512.  
  513. lancer:
  514. dc.l $6000000,$20000
  515. dc.L $40000,$800000,-$900
  516. dc.l $5d80000,-$20000
  517. dc.L $40000,$600000,-$b00
  518. dc.l $6000000,-$7000
  519. dc.L $50000,$480000,-$1300
  520. dc.l $6100000,$40000
  521. dc.l $40000,$500000,-$e00
  522. dc.L $5f00000,-$30000
  523. dc.L $60000,$400000,-$1500
  524. dc.L $6000000,$4000
  525. dc.L $40000,$400000,-$1100
  526. dc.L $5f80000,-$2000
  527. dc.L $48000,$600000,-$1800
  528. dc.L $6100000,$c000
  529. dc.l $55000,$500000,-$1000
  530. dc.l $6000000,$60000
  531. dc.l $50000,$680000,-$1400
  532. dc.L $5e00000,-$20000
  533. dc.L $60000,$3c0000,-$1700
  534. dc.l $5f40000,-$8000
  535. dc.L $30000,$300000,-$1900
  536. dc.L $6000000,0
  537. dc.l $50000,$40000,-$1500
  538. dc.l $6050000,$d000
  539. dc.L $50000,$50000,-$1100
  540. dc.L $5f00000,-$4000
  541. dc.L $50000,$400000,-$1800
  542. dc.L $6000000,$30000
  543. dc.L $40000,$200000,-$1600
  544. dc.L $6000000,-$14000
  545. dc.L $48000,$400000,-$1000
  546. dc.l $5f00000,-$40000
  547. dc.l $40000,$500000,-$e00
  548. dc.L $6000000,-$10000
  549. dc.L $50000,$500000,-$1200
  550. dc.l $6080000,$30000
  551. dc.L $3b000,$400000,-$d00
  552. dc.w $7777
  553.  
  554. lancerc:dc.L lancer+20
  555.  
  556.  
  557.     ;***  -1:ligne suivante
  558.     ;     -2:decaler toute la prochaine ligne pour centrer
  559.     ;     le texte
  560. text1:
  561. dc.b -1
  562. dc.b -1
  563. dc.b "        ANGELS        ",-1,-2    ;centre 'Present'
  564. DC.B "       PRESENT       ",-1
  565. dc.B -1,-1,-1
  566. dc.B "       BEAST II",-1
  567. DC.B -1
  568. DC.B " 100% 2 DISKS VERSION",0    ;0=fini
  569.  
  570. dc.b "                      "    ;22 chars. maxi
  571.  
  572.     ;*** dc.b 1,2,3,4 : change speed
  573.     ;dc.b $80: stop scrolltext
  574.  
  575. text:
  576. ;dc.B 1,"   This is slow      ",2," This is medium       ",3
  577. ;dc.b "This is normal         ",4,"Thiiiiis iiiiiiiis"
  578. ;dc.B " faaaaaaaaaaaaaaast !!!        ",3
  579.  
  580. dc.B 3,"    --- ANGELS ---  ",2,32,1,32    ;centre a 22 chars.
  581. dc.b $80,1,32,2,32,3
  582. dc.b "bring you another quality crack called..."
  583. dc.B "  Shadow of the Beast II",$80
  584. dc.B "  from Psygnosis "
  585. dc.B "!   This is the two-disks 100%"
  586. dc.B " version of this game !   "
  587. dc.b "To contact us, write to ... ",1
  588. dc.b "P.O. Box 10 - 4504 - Obercorn - LUXEMBURG ... "
  589. dc.B "P.O. Box 3 - 6040 - Jumet - BELGIUM ... "
  590. dc.b "P.O. Box 31 - 9910 - Mariakerke - BELGIUM ... "
  591. dc.B "P.O. Box 2568 - 4300 - Sandnes - NORWAY   "
  592. dc.b "or call our boards ... "
  593. dc.b "Amiga East: 804-499-2266 (World HQ) ... "
  594. dc.b "Insider BBS: +39-564-415-697 (Euro HQ) ... "
  595. dc.b "World Trade Center: +41-170-11323 (Swiss HQ) ... "
  596. dc.B "Skyfox BBS: +49-911-353-571 (German HQ) ... "
  597. dc.b "City limits: +44-704-501-09 (England HQ) ... "
  598. dc.b "The Dutch Pirate: +31-011-723-66 (Holland HQ) ... "
  599. dc.b "Escape zone: 704-254-6448 ... "
  600. dc.B "Digital Expression: 813-398-7393 ... "
  601. dc.b "Wreck House: 201-751-2175 ... "
  602. dc.b "Reign in blood: +49-202-406-0981 ... "
  603. dc.B "House of Insanity: 813-584-6089      "
  604. dc.b "That's all !  "
  605. dc.B " Greetings to all our",3
  606. dc.b " friends and contacts all over the world !           "
  607. dc.b "This was ",2,"the Fireworks Intro"
  608. dc.b " coded by CORTO   "
  609. dc.b $7f," ANGELS 1990                          ",3,0
  610. even
  611. textptr:dc.l text
  612.  
  613. normal:
  614. lea text1,a0
  615. move.l #bp0,d2
  616. normall1:
  617. move.L d2,d1
  618. normall2:clr.l d0
  619. move.b (a0)+,d0
  620. tst.B d0
  621. beq.L ret
  622. cmpi.B #-1,d0
  623. beq.s line1
  624. cmpi.b #-2,d0
  625. bne.s norm1
  626. move.l #$8fca8000,con1+2
  627. bra.s normall2
  628. norm1:
  629. sub.b #$20,d0
  630. ;lsl.b #2,d0
  631. mulu #72,d0
  632. addi.l #fonts,d0
  633. bsr.L letter
  634. addq.L #2,d1
  635. bra.s normall2
  636. line1:
  637. addi.l #16*64,d2
  638. move.l #$0fca0000,con1+2
  639. bra.s normall1
  640.  
  641. print:
  642. tst.b textstop
  643. bne.L ret
  644. clr.l d0
  645. move.l textptr,a0
  646. move.b (a0)+,d0
  647. tst.b d0
  648. beq.s fini
  649. move.l a0,textptr
  650. cmpi.b #$80,d0
  651. beq.L spechg1
  652. cmpi.B #$20,d0
  653. blo.s spechg
  654. sub.b #$20,d0
  655. mulu #36,d0
  656. addi.l #font,d0
  657. move.L d0,a0
  658. lea scroll+44,a1
  659. move (a0)+,[46*0](a1)
  660. move (a0)+,[46*1](a1)
  661. move (a0)+,[46*2](a1)
  662. move (a0)+,[46*3](a1)
  663. move (a0)+,[46*4](a1)
  664. move (a0)+,[46*5](a1)
  665. move (a0)+,[46*6](a1)
  666. move (a0)+,[46*7](a1)
  667. move (a0)+,[46*8](a1)
  668. move (a0)+,[46*9](a1)
  669. move (a0)+,[46*10](a1)
  670. move (a0)+,[46*11](a1)
  671. move (a0)+,[46*12](a1)
  672. move (a0)+,[46*13](a1)
  673. move (a0)+,[46*14](a1)
  674. move (a0)+,[46*15](a1)
  675. move (a0)+,[46*16](a1)
  676. move (a0)+,[46*17](a1)
  677. ret:rts
  678. ret1:subq.B #1,textstop
  679. rts
  680. fini:
  681. move.l #text,textptr
  682. bra.L print
  683. spechg:
  684. subq.b #1,d0
  685. lsl #1,d0
  686. lea speedtable,a0
  687. move (a0,d0.w),d0
  688. move.b d0,delai2
  689. lsr #8,d0
  690. move.b d0,delai
  691. clr.b wait1
  692. bra.L print
  693. spechg1:move.B #150,textstop
  694. rts
  695. textstop:dc.B 0
  696. even
  697.  
  698. letter:    ;d0=font,d1=bp
  699. move #$8400,$96(a6)
  700. letter1:btst #6,2(a6)
  701. bne.s letter1
  702. move #$400,$96(a6)
  703. move.l d0,$50(a6)
  704. move.l d1,$54(a6)
  705. move.l d1,$48(a6)
  706. move.l d0,$4c(a6)
  707. con1:move.l #$fca0000,$40(a6)
  708. move.l #$ffff0000,$44(a6)
  709. move.w #60,$66(a6)
  710. move #60,$60(a6)
  711. clr.l $62(a6)
  712. move.w #[18*64]+2,$58(a6)
  713. rts
  714.  
  715. cycle:
  716. tst.b textstop
  717. bne.L ret1
  718. move #$8400,$96(a6)
  719. cyc1:btst #6,$2(a6)
  720. bne.s cyc1
  721. move #$400,$96(a6)
  722. move.l #scroll-2,$54(a6)
  723. move.l #scroll,$50(a6)
  724. move.l delai2,$40(a6)
  725. move.l #$ffffffff,$44(a6)
  726. clr.l $64(a6)
  727. move.w #1048,$58(a6)
  728. rts
  729.  
  730. save_all:
  731. move.L 4,a6
  732. jsr -132(a6)
  733. move.b #%10000111,$bfd100
  734. move.l $6c,save_vecteur_irq
  735. move.w $dff01c,save_intena
  736. or.w #$c000,save_intena
  737. move.w $dff002,save_dmacon
  738. or.w #$8100,save_dmacon
  739. rts
  740. restore_all:
  741. move.l save_vecteur_irq,$6c
  742. move.w #$7fff,$dff09a
  743. move.w save_intena,$dff09a
  744. move.w #$7fff,$dff096
  745. move.w save_dmacon,$dff096
  746. move.l 4,a6
  747. lea name_glib,a1
  748. moveq #0,d0
  749. jsr -552(a6)
  750. move.l d0,a0
  751. move.l 38(a0),$dff080
  752. clr.w $dff088
  753. move.L 4,a6
  754. jsr -138(a6)
  755. rts
  756. save_intena:dc.w 0
  757. save_dmacon:dc.w 0
  758. save_vecteur_irq:dc.l 0
  759. name_glib:dc.b "graphics.library",0
  760. even
  761.  
  762. makedet:
  763. lea det,a0
  764. move #79,d7
  765. mdl1:
  766. clr.L (a0)+
  767. move.l #$6000000,(a0)+
  768. move.L #$40000,(a0)+
  769. move.l #$20000,(a0)+    ;varg
  770. move.L #$800000,(a0)+    ;maxmod (modx)
  771. move #176,(a0)+        ;cx
  772. move #221,(a0)+        ;cy
  773. move #-1,(a0)+        ;type    -1=fini
  774. clr (a0)+        ;adr
  775. clr (a0)+        ;img
  776. move.L #-$900,(a0)+    ;amod
  777.  
  778. dbra d7,mdl1
  779.  
  780. lea det,a0
  781. bsr.s makefusee
  782. lea det+[50*nbdata],a0
  783. bsr.s makefusee
  784. rts
  785.  
  786. makefusee:
  787. move.L lancerc,a2
  788. clr.L (a0)+
  789. move.l (a2),(a0)+
  790. move.L 8(a2),(a0)+
  791. move.L 4(a2),(a0)+    ;varg
  792. move.L 12(a2),(a0)+    ;maxmod (modx)
  793. move #176,(a0)+        ;cx
  794. move #221,(a0)+        ;cy
  795. move.L a0,typstop
  796. move.B #150,typcount
  797. move #0,(a0)+        ;type    0=1e 1=eclats  2=arret
  798. clr (a0)+        ;adr
  799. clr (a0)+        ;img
  800. move.L 16(a2),(a0)+    ;amod
  801. addi.L #20,a2
  802. cmpi #$7777,(a2)
  803. bne.s mf1a
  804. lea lancer,a2
  805. mf1a:move.L a2,lancerc
  806. rts
  807.  
  808. explose:
  809.  
  810. ;*** Enlever la ligne suivante pour que l'ecran ne bouge plus
  811. ;a chaque explosion
  812.  
  813. ;move #$10,boum+2
  814.  
  815. cmpi.L #bp1,a4
  816. bne.s exp1
  817. bsr.L clear
  818. bra.s exp2
  819. exp1:
  820. bsr.L clear2
  821. exp2:
  822. move #39,d7
  823. move #$600,d4
  824. move.l #$40000,d5
  825. move.L a0,a1
  826. expl1:
  827. clr.l (a0)+
  828. move d4,(a0)+
  829. clr (a0)+
  830. move.L d5,(a0)+
  831. clr.L (a0)+
  832. move.L #$7fffffff,(a0)+
  833. move d3,(a0)+
  834. move d2,(a0)+
  835. move #1,(a0)+
  836. clr.L (a0)+
  837. clr.L (a0)+
  838. add d2,d5
  839. add d3,d5
  840. add d2,d5
  841. add $df0006,d5
  842. ;rol #4,d5
  843. andi.L #$3fc00,d5
  844. add d2,d4
  845. add d3,d4
  846. add d2,d4
  847. add $df0006,d4
  848. andi #$7fe,d4
  849. dbra d7,expl1
  850.  
  851.  
  852. move.L a1,a0
  853. makedet1:
  854. move.L lancerc,a2
  855. clr.L (a0)+
  856. move.l (a2),(a0)+
  857. move.L 8(a2),(a0)+
  858. move.L 4(a2),(a0)+    ;varg
  859. move.L 12(a2),(a0)+    ;maxmod (modx)
  860. move #176,(a0)+        ;cx
  861. move #221,(a0)+        ;cy
  862. move.L a0,typstop
  863. move.B #150,typcount
  864. move #0,(a0)+        ;type    0=1e 1=eclats  2=arret
  865. clr (a0)+        ;adr
  866. clr (a0)+        ;img
  867. move.L 16(a2),(a0)+    ;amod
  868. addi.L #20,a2
  869. cmpi #$7777,(a2)
  870. bne.s md1a
  871. lea lancer,a2
  872. md1a:move.L a2,lancerc
  873. move.L coltabc,a2
  874. move (a2)+,d0
  875. cmpi #$7777,(a2)
  876. bne.s md1b
  877. lea coltab,a2
  878. md1b:move.L a2,coltabc
  879. cmpi.l #bp3,a4
  880. beq.s exp5
  881. move d0,colmap1+2
  882. rts
  883. exp5:move d0,colmap2+2
  884. move d0,colmap2+6
  885. rts
  886.  
  887. coltab:dc.W $fff,$ff0,$f,$f00,$f0
  888. dc.w $f80,$ea6,$aaf
  889. dc.w $ff,$f0f,$ff0
  890. dc.w $80f,$f80,$f08,$fff,$f
  891. dc.W $8f8,$d5d,$08f,$cfc,$fc8,$af0,$f0a
  892. dc.W $fff,$fa0,$46f,$88f,$f84,$9d9,$b8f
  893. dc.W $7777
  894. coltabc:dc.l coltab
  895.  
  896. lastloop:dc.w 14
  897. coltab2:dc.w -$11,0
  898. dc.w -$100,1    ;bleu
  899. dc.w -1,$10    ;vert
  900. dc.w 0,$100    ;jaune
  901. dc.w -$10,1    ;violet
  902. dc.w -$100,$10    ;bleu-vert
  903. dc.w $7777
  904. coltab2c:dc.l coltab2
  905. makecopper:
  906. lea cop1+6,a0
  907. lea cop2+6,a2
  908. move lastloop,d7
  909. mcl1:
  910. move.l coltab2c,a1
  911. move (a0),d0
  912. move (a1)+,d1
  913. move (a1)+,d2
  914. add d1,d0
  915. add d2,d0
  916. move d0,(a0)
  917. move d0,d1
  918. move d0,d2
  919. move d0,d3
  920. andi #$f00,d1
  921. andi #$f0,d2
  922. andi #$f,d3
  923. lsr #1,d1
  924. andi #$f00,d1
  925. lsr #1,d2
  926. andi #$f0,d2
  927. lsr #1,d3
  928. andi #$f,d3
  929. or d1,d3
  930. or d2,d3
  931. move d3,(a2)
  932. subq.L #8,a2
  933. addq.L #8,a0
  934. dbra d7,mcl1
  935. subq #1,lastloop
  936.  
  937. tst lastloop
  938. bmi.s mcl3
  939. rts
  940. mcl3:
  941. move #14,lastloop
  942. cmpi #$7777,(a1)
  943. bne.s mcl2
  944. lea coltab2,a1
  945. mcl2:
  946. move.l a1,coltab2c
  947. rts
  948.  
  949. copperlist:
  950. dc.L $8e2479,$9033c9,$920030,$9400d8
  951.  
  952. dc.l $1840ccc,$1860ccc,$18c0ccc,$18e0ccc
  953.  
  954. dc.L $1920fff,$1960fff,$19a0fff
  955. col3d:dc.L $19400b7,$19800b7,$19c00b7,$19e00b7
  956.  
  957. dc.L $240ffffe
  958. dc.l $1080002,$1001200,$1820f00
  959. dc.l $e00005,$e20000
  960. cop1:
  961. dc.L $250ffffe,$1820fff
  962. dc.L $260ffffe,$1820fff
  963. dc.L $270ffffe,$1820fff
  964. dc.L $280ffffe,$1820fff
  965. dc.L $290ffffe,$1820fff
  966. dc.L $2a0ffffe,$1820fff
  967. dc.L $2b0ffffe,$1820fff
  968. dc.L $2c0ffffe,$1820fff
  969. dc.L $2d0ffffe,$1820fff
  970. dc.L $2e0ffffe,$1820fff
  971. dc.L $2f0ffffe,$1820fff
  972. dc.L $300ffffe,$1820fff
  973. dc.L $310ffffe,$1820fff
  974. dc.L $320ffffe,$1820fff
  975. dc.L $330ffffe,$1820fff
  976. dc.L $340ffffe,$1820fff
  977.  
  978.  
  979. dc.l $360ffffe,$1000200
  980. boum:dc.l $1020000,$1040040,$1080014,$10a0014
  981. colmap1:dc.L $1820fff
  982. colmap2:dc.l $1880ff0,$18a0ff0
  983.  
  984. copbpl1:dc.w $e0,6,$e2,0,$e8,6,$ea,$4800,$f0,6,$f2,$9000
  985. dc.L $e40005,$e60400
  986. copbpl3d:dc.w $ec,5,$ee,$400,$f4,5,$f6,$400
  987.  
  988. dc.L $370ffffe,$1800002
  989. dc.L $380ffffe,$1800004
  990. dc.L $390ffffe,$1800007
  991. dc.L $3a0ffffe,$1800004
  992. dc.L $3b0ffffe,$1800002
  993. dc.L $3c0ffffe,$1800000
  994. dc.L $3d0ffffe,$1006600
  995.  
  996.  
  997. dc.L $ffdffffe,$ffffe
  998. dc.L $1b0ffffe,$1001200,$1820fff
  999. dc.L $1c0ffffe,$1800002,$1820eee
  1000. dc.L $1d0ffffe,$1800004,$1820ddd
  1001. dc.l $1e0ffffe,$1800007,$1820ccc
  1002. dc.l $1f0ffffe,$1800004,$1820bbb
  1003. dc.l $200ffffe,$1800002,$1000200
  1004. dc.L $210ffffe,$1800000,$1820fff
  1005. dc.l $108ffa6,$1001200
  1006. dc.l $e00005,$e2033c
  1007. dc.L $220ffffe,$1820fff
  1008. dc.L $230ffffe,$1820fff
  1009. dc.L $240ffffe,$1820fff
  1010. dc.L $250ffffe,$1820fff
  1011. dc.L $260ffffe,$1820fff
  1012. dc.L $270ffffe,$1820fff
  1013. dc.L $280ffffe,$1820fff
  1014. dc.L $290ffffe,$1820fff
  1015. dc.L $2A0ffffe,$1820fff
  1016. dc.L $2b0ffffe,$1820fff
  1017. dc.L $2c0ffffe,$1820fff
  1018. dc.L $2d0ffffe,$1820fff
  1019. dc.L $2e0ffffe,$1820fff
  1020. dc.L $2f0ffffe,$1820fff
  1021. dc.L $300ffffe,$1820fff
  1022. cop2:dc.L $310ffffe,$1820fff
  1023. dc.l -2
  1024.  
  1025. si:
  1026. incbin "sincos"
  1027. cos=si+$200
  1028.  
  1029. det:blk.b 100*nbdata
  1030.  
  1031.  
  1032. font:
  1033. incbin "globulus"
  1034.  
  1035. end:
  1036. fonts:blk.b 3456*2
  1037. scroll=$50000+46
  1038. bp0=$50400
  1039.  
  1040. bp1=$60000
  1041. bp2=$64800
  1042. bp3=$69000
  1043. b3p1=$6d800
  1044. b3p2=$71e00
  1045.